设计SDL安全体系时有哪些原则
设计SDL安全体系时有以下原则:
攻击面最小化原则:攻击面是指程序任何能被用户或者其它程序所访问到的部分,这些暴露给用户的地方往往也是最可能被恶意攻击者攻击的地方。攻击面最小化即是指尽量减少暴露恶意用户可能发现并试图利用的攻击面数量。软件产品的受攻击面是一个混合体,不仅包括代码、接口、服务,也包括对所有用户提供服务的协议。尤其是那些未被验证或者远程的用户都可以访问到的协议,安全人员在攻击面最小化时首先要对攻击面进行分析,攻击面分析就是枚举所有访问入库、接口、协议一剂可执行代码的过程。
基本隐私原则:用户使用软件时无可避免个人信息被收集、使用甚至分发,企业则有责任和义务建立保护个人信息的保护措施,抵御敌对攻击行为,确保用户基本隐私的安全性。隐私安全是建立可信任应用程序的关键因素。对于特殊的软件或者全球性的产品,设计人员需要明确软件的行为及针对人群。尤其要考虑当地国家的法律法规,如美国儿童网路隐私保护法COPPA等,企业在开发产品、服务时有必要制定明确的隐私准则,对获取、记录用户隐私的相关产品需有明确的要求和指导建议。
权限最小化原则:在进行软件设计时,安全设计人员可以评估应用程序的行为及功能所需的最低限度权限及访问级别,从而合理分配相应的权限。如果程序特定情况必须要较高级别的权限,也可以考虑特权赋予及释放的机制。即便程序遭到攻击,也可以将损失降到最低。
默认安全原则:默认安全配置在客户熟悉安全配置选项之前不仅有利于更好的帮助客户掌握安全配置经验,同时也可以确保应用程序初始状态下处于较安全状态。而客户可根据实际使用情况而决定应用程序安全与隐私的等级水平是否降低。
纵深防御原则:与默认安全一样,纵深防御也是设计安全方案时的重要指导思想。纵深防御包含两层含义首先,要在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体,其次,要在正确的地方做正确的事情,即在解决根本问题的地方实施针对性的安全方案。纵深防御并不是同一个安全方案要做两遍或多遍,而是要从不同的层面、不同的角度对系统做出整体的解决方案。
威胁建模原则:威胁建模是一种分析应用程序威胁的过程和方法。这里的威胁是指恶意用户可能会试图利用以破坏系统,和我们常说的漏洞并不相同。漏洞是一个特定的可以被利用的威胁,如缓冲区溢出、sql注入等。作为SDL设计阶段的一部分安全活动,威胁建模允许安全设计人员尽在的识别潜在的安全问题并实施相应缓解措施。在设计阶段把潜在的威胁发现有助于威胁的全面和更有效的解决,同时也有助于降低开发和后期维护的成本。